package com.atguigu.day20.notify03.n4;

public class Bar {
    //记录菜的数量
    static int count;
    //吧台上菜的最大数量
    public static final Integer MAX_COUNT = 10;
    //吧台上菜的最小数量
    public static final Integer MIN_COUNT = 0;

    public static synchronized void take() {
        //1.判断吧台菜的数量 <=0 等待
        while (count <= MIN_COUNT) {
            try {
                Bar.class.wait();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        //2.上菜
        count--;
        //展示
        System.out.println(Thread.currentThread().getName() + " 上了一道菜,吧台上还有[" + count + "]道菜");
        //3.通知厨师做菜
        Bar.class.notifyAll();
    }


    //静态同步方法 锁对象 类名.class
    public static synchronized void make() {
        //厨师线程 做菜  如果吧台上菜的数量==10  厨师等待
        //1.厨师判断菜的数量 >=10 等待
        while (count >= MAX_COUNT) {
            try {
                Bar.class.wait();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        //2.做菜
        count++;
        //展示
        System.out.println(Thread.currentThread().getName() + " 做了一道菜,吧台上有[" + count + "]道菜");
        //3.通知服务员上菜
        Bar.class.notifyAll();
    }
}
